import { login, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'

export default {
  // 命名空间开启
  namespaced: true,
  state () {
    return {
      token: getToken(),
      userinfo: {}
    }
  },
  mutations: {
    // 更新token的方法
    updateToken (state, payload) {
      state.token = payload

      // 同步到本地存储
      setToken(payload)
    },
    // 删除token的方法
    delToken (state) {
      state.token = null

      // 同步到本地
      removeToken()
    },
    // 更新用户信息方法
    updateUserInfo (state, payload) {
      state.userinfo = payload
    }
  },

  actions: {
    // 登录请求获取token
    async storeLogin (context, payload) {
      console.log(payload)
      // 发起请求获取token
      const token = await login(payload)

      console.log(token)
      // 提交修改token的方法
      context.commit('updateToken', token)
    },

    // 发起获取用户信息请求
    async storeGetUserInfo (context) {
      const data = await getInfo()

      context.commit('updateUserInfo', data)
    },

    // 登出的方法
    storeGetOut (context) {
      context.commit('delToken')
      context.commit('updateUserInfo', {})
    }
  }
}
